perm filename PUPFTP.ODI[S,NET] blob
sn#817885 filedate 1986-05-25 generic text, type T, neo UTF8
1) PUPFTP.FAI[S,NET] and 2) PUPFTP.OFA[S,NET] 5-25-86 10:14 pages 2,2
**** File 1) PUPFTP.FAI[S,NET]/2P/16L
1) DEFINE VERINF<.TTL(CCRMA,0.4U,24-May-86)> ;Did you make a history comment?
1) ;Type αFHistoryα:
**** File 2) PUPFTP.OFA[S,NET]/2P/16L
2) DEFINE VERINF<.TTL(CCRMA,0.4U,22-May-86)> ;Did you make a history comment?
2) ;Type αFHistoryα:
***************
**** File 1) PUPFTP.FAI[S,NET]/2P/36L
1) IFNDEF FTXINF,<↓FTXINF←←1>
1) ;Use same definitions as MAXC uses, so other EtherNet wizards may find
**** File 2) PUPFTP.OFA[S,NET]/2P/37L
2) ;Use same definitions as MAXC uses, so other EtherNet wizards may find
***************
**** File 1) PUPFTP.FAI[S,NET]/3P/131L
1) 24-May-86 TVR Double-quoting the whole thing was wrong. Need to quote everything
1) up to last host. We look only for "@" (and hope there isn't anyone
1) around who still uses "%"). Changed password handling to avoid
1) using INF privilege. Fixed error code in PLSTNM. Misc. cleanup
1) to get rid of a few PRINTX's.
1) History:
**** File 2) PUPFTP.OFA[S,NET]/3P/131L
2) 22-May-86 ME Disabled used of INFPRV to check passwords.
2) [Seems like the version/date macro ought to be right here!]
2) Only put up PUP007, for testing out mail address quoting stuff.
2) History:
***************
**** File 1) PUPFTP.FAI[S,NET]/4P/47L
1) ↓RCILAC←←23 ;Illegal Connect-Name
1) ↓RCILDV←←31 ;Illegal device
**** File 2) PUPFTP.OFA[S,NET]/4P/47L
2) ↓RCILDV←←31 ;Illegal device
***************
**** File 1) PUPFTP.FAI[S,NET]/8P/53L
1) ;;; *** This kludge assumes host name is exactly five characters long. Sigh. ***
1) PCONFIG←←227
**** File 2) PUPFTP.OFA[S,NET]/8P/53L
2) printx Kludge to get host name from CONFIG
2) PCONFIG←←227
***************
**** File 1) PUPFTP.FAI[S,NET]/8P/75L
1) USERBG: CALL WRASCZ,FTPVER,ERMSOP
1) CALL WRASCZ↑,<[[ASCIZ/
1) /]]>,ERMSOP
1) HNMLP: SKIPN NOPRMT ;Skip prompt due to invocation line?
**** File 2) PUPFTP.OFA[S,NET]/8P/75L
2) printx Maybe replace these OUTSTRs
2) USERBG: OUTSTR FTPVER
2) OUTSTR[ASCIZ/
2) /]
2) HNMLP: SKIPN NOPRMT ;Skip prompt due to invocation line?
***************
**** File 1) PUPFTP.FAI[S,NET]/17P/96L
1) MOVEI RET,MFDCHN
1) printx We crash here if we reference a UDP that isn't mounted.
1) ;;; That is, if no pack is mounted, we can get "UDP offline or write locked",
1) ;;; and there's no obvious way of finding out if there is a pack there other
1) ;;; than doing an absolute read (which requires INFPRV)
1) NOTUDP: LOOKUP MFDCHN,MFDFIL
1) JRST[ CALL SNDMRK,<[MKNO]>
**** File 2) PUPFTP.OFA[S,NET]/17P/96L
2) printx We crash here if we reference a UDP that isn't mounted.
2) LOOKUP MFDCHN,MFDFIL
2) JRST[ CALL SNDMRK,<[MKNO]>
***************
**** File 1) PUPFTP.FAI[S,NET]/18P/82L
1) ;;; This one is even worse, as at this point, not even WAITS knows the pack
1) ;;; is write-locked!
1) ENTER OUTCHN,OUTFIL
**** File 2) PUPFTP.OFA[S,NET]/18P/82L
2) ENTER OUTCHN,OUTFIL
***************
**** File 1) PUPFTP.FAI[S,NET]/20P/152L
1) movei ret,[asciz?" ?] ;must end the quoted /FROM string!
**** File 2) PUPFTP.OFA[S,NET]/20P/152L
2) ;printx Since everyone supplies a full user name (with host), do with need (SuNet)?
2) ; movei ret,[asciz? (SuNet) " ?]
2) ; call wrascz↑,ret,outop
2) movei ret,[asciz?" ?] ;must end the quoted /FROM string!
***************
**** File 1) PUPFTP.FAI[S,NET]/20P/155L
1) TOLOOP: HLRZ RET,(TAC) ;Get name
1) TLO RET,(<POINT 7,0>)
1) PUSHP RET
1) PUSHP TAC
1) SETZ TAC,
1) ; \ /
**** File 2) PUPFTP.OFA[S,NET]/20P/158L
2) TOLOOP: MOVEI RET,42 ;Double-quote
2) XCT OUTOP
2) HLRZ RET,(TAC) ;Get name
2) CALL WRASCZ↑,RET,OUTOP
2) MOVEI RET,42 ;Double-quote
2) XCT OUTOP
2) HRRZ TAC,(TAC) ;Get next name
2) JUMPN TAC,[MOVEI RET,"," ;Separate by commas
2) XCT OUTOP
2) JRST TOLOOP]
2) CALL WRASCZ,<[[BYTE (7) 15,12,14,"R","e"↔
2) ASCIZ/ceived: from /]]>,OUTOP
2) ;Rest is message
***************
**** File 1) PUPFTP.FAI[S,NET]/20P/163L
1) ;up to that. We assume the rest is a valid host name. TVR/May86
1) TOLP2: ILDB RET,-1(P) ;Get character from destination
1) CAIN RET,"@" ;Does it look like a host name? (If you change this
1) ; you'll have to stack the host separator below)
1) MOVE TAC,-1(P) ; Yes, remember the last thing like this we've seen
1) JUMPN RET,TOLP2 ;Repeat until end of string
1) MOVEM TAC,-1(P) ;Remember the division
1) POPP TAC ;Get back list poitner
1) HLRZ RET,(TAC) ;So we can get back to beginning of list
1) SKIPN (P) ;Is there a host name?
1) JRST[ POP P,(P) ; No, we're done then.
1) JRST NOHOST ]
1) SETZ RET, ;Terminate string at last "@" (If more than one
1) DPB RET,(P) ; host seperator, you'll have to save it.)
1) MOVEI RET,42 ;Double-quote
1) XCT OUTOP
1) HLRZ RET,(TAC) ;Get back name again
1) CALL WRASCZ↑,RET,OUTOP ;Output from beginning of string up to last "@"
1) MOVEI RET,42 ;Double-quote
1) XCT OUTOP
1) MOVEI RET,"@" ;Put back host separator
1) DPB RET,(P)
1) POPP RET ;Get rest of destination string.
1) ; \ /
1) NOHOST: CALL WRASCZ↑,RET,OUTOP ;Output unquoted destination or @<host name>
1) HRRZ TAC,(TAC) ;Get next name
1) JUMPN TAC,[MOVEI RET,"," ;Separate by commas
1) XCT OUTOP
1) JRST TOLOOP]
1) CALL WRASCZ,<[[BYTE (7) 15,12,14,"R","e"↔
1) ASCIZ/ceived: from /]]>,OUTOP
1) ;Rest is message
1) ;insert line saying when Received and from where, e.g.:
1) ;Received: from CMU-CS-C by SU-AI with NCP/FTP; 20 Jan 83 11:42:41 PST
1) CALL WRASCZ↑,<[HNAME]>,OUTOP ;ptr to host name
**** File 2) PUPFTP.OFA[S,NET]/20P/173L
2) CALL WRASCZ↑,<[HNAME]>,OUTOP ;ptr to host name
***************
**** File 1) PUPFTP.FAI[S,NET]/28P/219L
1) ;printx Need to flush data stream if we get bad binary input.
1) TRZ RET2,377 ;Yes, losing T[W]ENEX PUPFTP
**** File 2) PUPFTP.OFA[S,NET]/28P/219L
2) printx Need to flush data stream if we get bad binary input.
2) TRZ RET2,377 ;Yes, losing T[W]ENEX PUPFTP
***************
**** File 1) PUPFTP.FAI[S,NET]/34P/120L
1) IFE FTXINF,<
1) CALL HASHER,RET ;Mangle it to discourange password hacking
1) >;IFE FTXINF
1) NOPSW: PUSHP RET
**** File 2) PUPFTP.OFA[S,NET]/34P/120L
2) CALL HASHER,RET ;Mangle it to discourange password hacking
2) NOPSW: PUSHP RET
***************
**** File 1) PUPFTP.FAI[S,NET]/41P/87L
1) SKIPE RET2,CONNAM
1) JRST[ MOVEI RET,RCILAC
1) JRST FINIS2 ]
**** File 2) PUPFTP.OFA[S,NET]/41P/87L
2) printx Find the right error code with CONNECT-NAME is bad.
2) SKIPE RET2,CONNAM
2) JRST[ MOVEI RET,RCILDR
2) JRST FINIS2 ]
***************
**** File 1) PUPFTP.FAI[S,NET]/46P/24L
1) May set UPPN,OLDPSW,PRIVS,PSWD
1) Uses PROCHN for its own purposes.
**** File 2) PUPFTP.OFA[S,NET]/46P/24L
2) May set UPPN,OLDPWD,PRIVS,PSWD
2) Uses PROCHN for its own purposes.
***************
**** File 1) PUPFTP.FAI[S,NET]/46P/48L
1) IFN FTXINF,<
1) CALL HASHER,RET ;If we haven't mangled it yet, do it now.
1) >;IFN FTXINF
1) CAMN RET,OLDPSW ;Same as the last one?
**** File 2) PUPFTP.OFA[S,NET]/46P/48L
2) CALL PLGET,PLIST,<[P.UPSW]> ;Get password
2) JUMPE RET,[SETZM PASSOK ; No longer valid
2) JRST SKPPCK ]
2) MOVE RET,(RET) ;Get mangled password from f.s. block
2) CAMN RET,OLDPSW ;Same as the last one?
***************
**** File 1) PUPFTP.FAI[S,NET]/46P/71L
1) IFE FTXINF,<
1) MOVSI RET,INFPRV ;We need to get the password
1) PRVIOR RET,
1) >;IFE FTXINF
1) MTAPE PROCHN,PRVMTA ;Read special stuff (at least for priv bits)
1) JRST SKPPCK ; Can't. Forget about giving owner access.
1) IFE FTXINF,<
1) MOVE RET,PASWD
**** File 2) PUPFTP.OFA[S,NET]/46P/72L
2) ; MOVSI RET,INFPRV ;We need to get the password
2) ; PRVIOR RET,
2) MTAPE PROCHN,PRVMTA ;Read special stuff
2) JRST SKPPCK ; Can't. Forget about giving owner access.
2) MOVE RET,PASWD
***************
**** File 1) PUPFTP.FAI[S,NET]/46P/90L
1) >;IFE FTXINF
1) IFN FTXINF,<
1) SETZM PASWD ;Just in case...
1) CALL PLGET,PLIST,<[P.UPSW]> ;Get password again
1) JUMPE RET,[SETZM PASSOK ; No longer valid
1) JRST SKPPCK ]
1) MOVE RET,(RET) ;Get (maybe) mangled password from f.s. block
1) MOVEM RET,PASMTA+3
1) MTAPE PROCHN,PASMTA ;At M. Frost's request.
1) JRST[ SETZM PASMTA+3
1) JRST SKPPCK ]
1) SETZM PASMTA+3
1) SETOM PASSOK
1) CALL HASHER,RET ;At least make it more challenging...
1) MOVEM RET,OLDPSW ;Put it back for a while
1) >;IFN FTXINF
1) MOVE RET,PRIVWD ;Copy privileges to permanent place.
**** File 2) PUPFTP.OFA[S,NET]/46P/88L
2) MOVE RET,PRIVWD ;Copy privileges to permanent place.
***************
**** File 1) PUPFTP.FAI[S,NET]/46P/111L
1) IFE FTXINF,<
1) MOVSI RET,INFPRV ;No longer need to be special
1) PRVACM RET,
1) >;IFE FTXINF
1) POPJ P,
**** File 2) PUPFTP.OFA[S,NET]/46P/93L
2) ; MOVSI RET,INFPRV ;No longer need to be special
2) ; PRVACM RET,
2) POPJ P,
***************
**** File 1) PUPFTP.FAI[S,NET]/47P/43L
1) RETURN ] ;Fail, don't stop job, on errors
1) ISDSK: MOVEI RET,200
1) RETURN ]
**** File 2) PUPFTP.OFA[S,NET]/47P/43L
2) RETURN ]
2) ISDSK: MOVEI RET,200 ;Fail, don't stop job, on errors
2) RETURN ]
***************
**** File 1) PUPFTP.FAI[S,NET]/51P/22L
1) MOVE RET,VALUE
**** File 2) PUPFTP.OFA[S,NET]/51P/22L
2) printx Using kludge hashing function.
2) MOVE RET,VALUE
***************
**** File 1) PUPFTP.FAI[S,NET]/64P/20L
1) MOVE RET,PUPIHD+2 ;Get byte count
**** File 2) PUPFTP.OFA[S,NET]/64P/20L
2) repeat 0,<
2) MOVE RET,PUPIHD ;Get address of buffer
2) ADD RET,1(RET) ;Address last word in buffer
2) printx Flush this someday, since we get an honest byte count.
2) LDB RET,[POINT 4,1(RET),35] ;Get padding information
2) SKIPLE RET,[0↔-1↔2↔-2↔4↔5↔6↔-3↔10↔11↔12↔13↔14↔15↔16↔17](RET)
2) PUSHJ P,DRYROT ; "Can't happen"
2) ADDB RET,PUPIHD+2 ;Update byte count
2) >;repeat 0
2) MOVE RET,PUPIHD+2 ;Get byte count
***************